﻿using System;
using System.Linq;
using WindMill.Models.Controladoria;
using WindMill.Services;


namespace WindMill.Models.Estoque
{
    partial class Estoque
    {
        private Filial _filial;

        public string DescLote { get { return LoteTipo != null ? LoteTipo.DescLote : ""; } }
        public string DescPeneira { get { return LoteTipo != null ? LoteTipo.DescPeneira : ""; } }
        public DateTime? DtVencimento { get { return LoteTipo != null ? LoteTipo.DtVencimento : null; } }
        public string NumFabricante { get { return Produto != null ? Produto.NumFabricante : ""; } }
        public string DescProduto { get { return Produto != null ? Produto.DescProduto : ""; } }
        public decimal NumEmbalagem { get { return Produto != null ? Produto.NumEmbalagem ?? 0 : 0; } }
        public string Unidade { get { return Produto != null ? Produto.DescUnidade : ""; } }

        public Filial Filial
        {
            get
            {
                if (CodFilial == 0) return null;
                if (_filial == null || _filial.Id != CodFilial)
                {
                    var ctx = (EDMControladoria) OracleConnectionPool.GetPool().GetDbContext<EDMControladoria>();
                    _filial = ctx.Filials.FirstOrDefault(c=>c.Id == CodFilial);                    
                }
                
                return _filial;
            }
            set
            {
                if (value == null)
                    CodFilial = 0;

                if (_filial != value && !_filial.Equals(value))
                {
                    _filial = value;
                    CodFilial = value.Id;
                }
                
            }
        }

    }
}
